查看原文
其他

TI(德州仪器)TMS320C674x 逆向分析方法

2017-03-24 pealcock 看雪学院

一、闲语

去年听闻看雪融资了,一看新闻发现才融资 500 万,在这个泡沫膨胀的互联网+年代,真是太少了。像我这种只知索取,从未回馈论坛的人深感惭愧,无赖水平有限,如今终于拼凑一篇文章,发到看雪,聊表心意。

TI 的逆向,网上能找到的资料很少,个人也并不懂嵌入式开发,整个逆向流程都是根据其他平台逆向经验,一步一步摸索出来,也许很多步骤非常LOW,如果有什么错误请批评指正,或者有更好的方法请不吝赐教。

二、正向开发流程

C 语言开发,开发工具使用 CCS(Code Composer Studio,基于 eclipse 开发的),有过开发经验的都会很容易上手,新建 test 工程,选择 C674x,输出文件为 ELF 格式,如图所示:

编译成功后,会生成 test.out 文件(ELF 格式)。

使用 TI 提供的 AISgen_d800k008.exe 把 .out 转成了 ais 格式:

最后将 test.bin 烧入设备即可。

三、逆向初步

逆向分析就是在仅仅只有 bin 文件的条件下,还原原来程序功能。IDA 对 TI 指令的反汇编支持很差,最新版本的 6.8 才有对 6xxxx 的支持,并且效果非常不好。我所用的方法是先把 AIS 格式还原为 ELF 格式,再使用 CCS 进行反汇编。

1、把 AIS 格式的 test.bin 还原为 ELF 格式文件

使用 UE 比对 test.bin 和 test.out,可以发现,test.out 中的 ELF 头和很多节被删除,只保留了几个基本的节。下面是 readelf -a test.out 的结果:

而 test.bin 中仅仅保留了.text .const .cinit 和入口点信息。

本来开始准备自己手动一点点还原的,后来在 AISgen 的安装目录下发现了一个程序 aisparse.exe,一看这名字就感觉有戏,运行结果:

Usage: aisparse ais.bin [ais.h]

果不其然,这个就是用来解析 bin 格式的,输入为 .bin 文件,输出为 .h 文件:

一下就清晰了很多,顺手写了个 AIS –> ELF 的小程序。当然,生成的 test.elf 相比原先的 test.out 丢失了很多信息。

2、逆向ELF

没有找到好的工具反汇编,最后发现使用 CCS 的调试功能的可以进行反汇编。这也需要一定的小技巧:使用 CCS 随便写一个程序,调试,在调试界面,依次选择 Run->Load->Load Program,选择 test.elf,就能调试了 test.elf,也可以从中 copy 出反汇编代码静态分析。需要注意的是,这里的反汇编代码有的地方是错误的哦,非常坑!

后面具体的指令格式,多看看 TI 官网文档:
http://www.ti.com/product/tms320c6745/technicaldocuments
里面资料非常详细,可以对着里面一个个看,用的比较多的两个文档:
TMS320C674x 指令格式:TMS320C674x DSP CPU and Instruction Set User's Guide .pdf
芯片相关的接口地址可以到这里找:  TMS320C6745, TMS320C6747 Fixed- and Floating-Point Digital Signal Processor (Rev. F)


 热 门 阅 读:



Firefox 中一个 Cross-mmap 溢出的利用

AutoIt 脚本反混淆

攻击 Western Digital NAS 个人云存储设备

渗透测试 Node.js 应用

UPDATE 查询中的 SQL 注入

......

更多优秀文章点击左下角“阅读原文”查看!


看雪论坛:http://bbs.pediy.com

微信公众号 ID:ikanxue

微博:看雪安全

投稿、合作:www.kanxue.com

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存